home *** CD-ROM | disk | FTP | other *** search
- import java.io.InputStream;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
-
- class GifDecoder {
- // $FF: renamed from: Û int
- private int field_0 = -1;
- // $FF: renamed from: Ü int[]
- private int[] field_1 = new int[280];
- // $FF: renamed from: Ý int
- private int field_2 = -1;
- // $FF: renamed from: Þ int
- private int field_3 = 0;
- // $FF: renamed from: ß int
- private int field_4 = 0;
- // $FF: renamed from: à int
- private int field_5 = 0;
- // $FF: renamed from: á int
- private int field_6 = 0;
- // $FF: renamed from: â boolean
- private boolean field_7 = false;
- // $FF: renamed from: ã int[]
- private int[] field_8 = null;
- // $FF: renamed from: ä int
- private int field_9 = 0;
- // $FF: renamed from: å int
- private int field_10 = 0;
- // $FF: renamed from: æ int
- private int field_11 = 0;
- // $FF: renamed from: ç int
- private int field_12 = 0;
- // $FF: renamed from: è int
- private int field_13 = 0;
- // $FF: renamed from: é boolean
- private boolean field_14 = false;
- // $FF: renamed from: ê boolean
- private boolean field_15 = false;
- // $FF: renamed from: ë int[]
- private int[] field_16 = null;
- // $FF: renamed from: ì int
- private int field_17 = 0;
- // $FF: renamed from: í boolean
- private boolean field_18;
- // $FF: renamed from: î int
- private int field_19;
- // $FF: renamed from: ï long
- private long field_20;
- // $FF: renamed from: ├░ int
- private int field_21 = 0;
- // $FF: renamed from: ├▒ int[]
- private static final int[] field_22 = new int[]{8, 8, 4, 2};
- // $FF: renamed from: ├▓ int[]
- private static final int[] field_23 = new int[]{0, 4, 2, 1};
- // $FF: renamed from: ├│ int
- int field_24 = 0;
- // $FF: renamed from: ├┤ int
- int field_25;
- // $FF: renamed from: ├╡ int
- int field_26;
- // $FF: renamed from: Â byte[]
- byte[] field_27;
- // $FF: renamed from: ├╢ int
- int field_28;
- // $FF: renamed from: ├╕ int
- int field_29;
- // $FF: renamed from: ├╣ int
- int field_30;
-
- public GifDecoder(byte[] var1) {
- this.field_27 = var1;
- this.field_25 = this.field_27.length;
- this.field_26 = 0;
- }
-
- public GifDecoder(InputStream var1) {
- byte[][] var2 = new byte[32][1];
- int var3 = 0;
- int var4 = 0;
-
- while(true) {
- var2[var3] = new byte[1024];
-
- try {
- var4 = var1.read(var2[var3]);
- } catch (Exception var8) {
- var4 = 0;
- }
-
- this.field_25 += var4;
- if (var4 != 1024) {
- this.field_27 = new byte[this.field_25];
- this.field_26 = 0;
- int var5 = 0;
- int var6 = 0;
-
- for(int var7 = 0; var7 <= var3; ++var7) {
- if (var7 == var3) {
- var6 = var4;
- } else {
- var6 = 1024;
- }
-
- System.arraycopy(var2[var7], 0, this.field_27, var5, var6);
- var5 += var6;
- }
-
- return;
- }
-
- ++var3;
- }
- }
-
- public boolean moreFrames() {
- return this.field_25 - this.field_26 >= 16;
- }
-
- public void nextFrame() {
- ++this.field_24;
- }
-
- public Image decodeImage() {
- return this.decodeImage(this.field_24);
- }
-
- public Image decodeImage(int var1) {
- Object var2 = null;
- if (var1 <= this.field_0) {
- return null;
- } else {
- if (this.field_0 < 0) {
- if (!this.method_3()) {
- return null;
- }
-
- if (!this.method_4()) {
- return null;
- }
- }
-
- while(this.method_9(1)) {
- int var3 = this.field_1[0];
- if (var3 == 59) {
- return null;
- }
-
- if (var3 == 33) {
- if (!this.method_7()) {
- return null;
- }
- } else if (var3 == 44) {
- if (!this.method_5()) {
- return null;
- }
-
- Image var4 = this.method_0();
- ++this.field_0;
- if (this.field_0 >= var1) {
- return var4;
- }
-
- Object var5 = null;
- }
- }
-
- return null;
- }
- }
-
- public void clear() {
- this.field_27 = null;
- this.field_1 = null;
- this.field_8 = null;
- this.field_16 = null;
- }
-
- // $FF: renamed from: Û () javax.microedition.lcdui.Image
- private Image method_0() {
- int var1 = this.field_11;
- int var2 = this.field_12;
- int var5 = 0;
- int var6 = 0;
- int var7 = 0;
- int[] var9 = new int[4096];
- int[] var10 = new int[4096];
- int[] var11 = new int[8192];
- if (!this.method_9(1)) {
- return null;
- } else {
- int var3 = this.field_1[0];
- Image var21 = Image.createImage(var1, var2);
- Graphics var22 = var21.getGraphics();
- int[] var23 = this.field_8;
- if (this.field_14) {
- var23 = this.field_16;
- }
-
- if (this.field_2 >= 0) {
- var23[this.field_2] = VirtualGraphics.bgcolor;
- }
-
- int var14 = 1 << var3;
- int var16 = var14 + 1;
- int var13 = var3 + 1;
- int var18 = var14 + 2;
- int var17 = -1;
- int var20 = -1;
-
- for(int var8 = 0; var8 < var14; var10[var8] = var8++) {
- }
-
- int var12 = 0;
- this.method_2();
- var6 = 0;
-
- for(int var26 = 0; var26 < var2; ++var26) {
- var5 = 0;
-
- while(var5 < var1) {
- if (var12 == 0) {
- int var19 = this.method_1(var13);
- if (var19 < 0) {
- return var21;
- }
-
- if (var19 > var18 || var19 == var16) {
- return var21;
- }
-
- if (var19 == var14) {
- var13 = var3 + 1;
- var18 = var14 + 2;
- var17 = -1;
- continue;
- }
-
- if (var17 == -1) {
- var11[var12++] = var10[var19];
- var17 = var19;
- var20 = var19;
- continue;
- }
-
- int var15 = var19;
- if (var19 == var18) {
- var11[var12++] = var20;
- var19 = var17;
- }
-
- while(var19 > var14) {
- var11[var12++] = var10[var19];
- var19 = var9[var19];
- }
-
- var20 = var10[var19];
- if (var18 >= 4096) {
- return var21;
- }
-
- var11[var12++] = var20;
- var9[var18] = var17;
- var10[var18] = var20;
- ++var18;
- if (var18 >= 1 << var13 && var18 < 4096) {
- ++var13;
- }
-
- var17 = var15;
- }
-
- --var12;
- int var4 = var11[var12];
- if (var4 < 0) {
- return var21;
- }
-
- if (var5 == 0) {
- this.field_29 = 0;
- this.field_28 = var23[var4];
- this.field_30 = 0;
- } else if (this.field_28 != var23[var4]) {
- var22.setColor(this.field_28);
- var22.drawLine(this.field_30, var6, this.field_30 + this.field_29, var6);
- this.field_29 = 0;
- this.field_28 = var23[var4];
- this.field_30 = var5;
- if (var5 == var1 - 1) {
- var22.setColor(var23[var4]);
- var22.drawLine(var5, var6, var5, var6);
- }
- } else {
- ++this.field_29;
- if (var5 == var1 - 1) {
- var22.setColor(this.field_28);
- var22.drawLine(this.field_30, var6, this.field_30 + this.field_29, var6);
- }
- }
-
- ++var5;
- }
-
- if (this.field_15) {
- for(var6 += field_22[var7]; var6 >= var2; var6 = field_23[var7]) {
- ++var7;
- if (var7 > 3) {
- return var21;
- }
- }
- } else {
- ++var6;
- }
- }
-
- return var21;
- }
- }
-
- // $FF: renamed from: Ü (int) int
- private int method_1(int var1) {
- while(true) {
- label21: {
- if (this.field_21 < var1) {
- if (this.field_18) {
- return -1;
- }
-
- if (this.field_17 != 0) {
- break label21;
- }
-
- this.field_17 = this.method_8();
- this.field_19 = 0;
- if (this.field_17 > 0) {
- break label21;
- }
-
- this.field_18 = true;
- }
-
- int var2 = (int)this.field_20 & (1 << var1) - 1;
- this.field_20 >>= var1;
- this.field_21 -= var1;
- return var2;
- }
-
- this.field_20 += (long)(this.field_1[this.field_19] << this.field_21);
- ++this.field_19;
- this.field_21 += 8;
- --this.field_17;
- }
- }
-
- // $FF: renamed from: Ý () void
- private void method_2() {
- this.field_21 = 0;
- this.field_17 = 0;
- this.field_20 = 0L;
- this.field_18 = false;
- this.field_19 = -1;
- }
-
- // $FF: renamed from: Þ () boolean
- private boolean method_3() {
- if (!this.method_9(6)) {
- return false;
- } else {
- return this.field_1[0] == 71 && this.field_1[1] == 73 && this.field_1[2] == 70 && this.field_1[3] == 56 && (this.field_1[4] == 55 || this.field_1[4] == 57) && this.field_1[5] == 97;
- }
- }
-
- // $FF: renamed from: ß () boolean
- private boolean method_4() {
- if (!this.method_9(7)) {
- return false;
- } else {
- this.field_3 = method_10(this.field_1[0], this.field_1[1]);
- this.field_4 = method_10(this.field_1[2], this.field_1[3]);
- int var1 = this.field_1[4];
- this.field_5 = this.field_1[5];
- int var2 = this.field_1[6];
- this.field_6 = 2 << (var1 & 7);
- this.field_7 = method_11(var1, 128);
- this.field_8 = null;
- return !this.field_7 || this.method_6(this.field_6, true);
- }
- }
-
- // $FF: renamed from: à () boolean
- private boolean method_5() {
- if (!this.method_9(9)) {
- return false;
- } else {
- this.field_9 = method_10(this.field_1[0], this.field_1[1]);
- this.field_10 = method_10(this.field_1[2], this.field_1[3]);
- this.field_11 = method_10(this.field_1[4], this.field_1[5]);
- this.field_12 = method_10(this.field_1[6], this.field_1[7]);
- int var1 = this.field_1[8];
- this.field_14 = method_11(var1, 128);
- this.field_13 = 2 << (var1 & 7);
- this.field_15 = method_11(var1, 64);
- this.field_16 = null;
- return !this.field_14 || this.method_6(this.field_13, false);
- }
- }
-
- // $FF: renamed from: á (int, boolean) boolean
- private boolean method_6(int var1, boolean var2) {
- int[] var3 = new int[var1];
-
- for(int var4 = 0; var4 < var1; ++var4) {
- if (!this.method_9(3)) {
- return false;
- }
-
- var3[var4] = this.field_1[0] << 16 | this.field_1[1] << 8 | this.field_1[2] | -16777216;
- }
-
- if (var2) {
- this.field_8 = var3;
- } else {
- this.field_16 = var3;
- }
-
- return true;
- }
-
- // $FF: renamed from: â () boolean
- private boolean method_7() {
- if (!this.method_9(1)) {
- return false;
- } else {
- int var1 = this.field_1[0];
- int var2 = -1;
- switch (var1) {
- case 1:
- case 254:
- case 255:
- default:
- break;
- case 249:
- var2 = this.method_8();
- if (var2 < 0) {
- return true;
- }
-
- if ((this.field_1[0] & 1) != 0) {
- this.field_2 = this.field_1[3];
- } else {
- this.field_2 = -1;
- }
- }
-
- do {
- var2 = this.method_8();
- } while(var2 > 0);
-
- return true;
- }
- }
-
- // $FF: renamed from: ã () int
- private int method_8() {
- if (!this.method_9(1)) {
- return -1;
- } else {
- int var1 = this.field_1[0];
- return var1 != 0 && !this.method_9(var1) ? -1 : var1;
- }
- }
-
- // $FF: renamed from: ä (int) boolean
- private boolean method_9(int var1) {
- if (this.field_26 + var1 >= this.field_25) {
- return false;
- } else {
- for(int var2 = 0; var2 < var1; ++var2) {
- int var3 = this.field_27[this.field_26 + var2];
- if (var3 < 0) {
- var3 += 256;
- }
-
- this.field_1[var2] = var3;
- }
-
- this.field_26 += var1;
- return true;
- }
- }
-
- // $FF: renamed from: å (int, int) int
- private static final int method_10(int var0, int var1) {
- return var1 << 8 | var0;
- }
-
- // $FF: renamed from: æ (int, int) boolean
- private static final boolean method_11(int var0, int var1) {
- return (var0 & var1) == var1;
- }
- }
-